package moulder.moulds; import moulder.Value; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.nodes.Node; import org.junit.Test; import org.mockito.InOrder; import java.io.StringReader; import java.util.List; import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual; import static org.mockito.Mockito.*; public class TexterTest extends BaseMoulderTest { @Test public void testRegularText() throws Exception { Value<String> text = mock(Value.class); when(text.get()).thenReturn("text"); Texter a = new Texter(text); Document document = Jsoup .parseBodyFragment("<html><body><outer>test</outer></body></html>"); Element element = document.getElementsByTag("outer").first(); List<Node> processed = a.process(element); // verify that bind and get were called, in this order InOrder inOrder = inOrder(text); inOrder.verify(text).get(); assertXMLEqual(new StringReader("<body><outer>text</outer></body>"), new StringReader(html(processed))); } @Test public void testSpecialChars() throws Exception { Value<String> text = mock(Value.class); when(text.get()).thenReturn("text<e a='v'>hello & welcome<"); Texter a = new Texter(text); Document document = Jsoup .parseBodyFragment("<html><body><outer>test</outer></body></html>"); Element element = document.getElementsByTag("outer").first(); List<Node> processed = a.process(element); // verify that bind and get were called, in this order InOrder inOrder = inOrder(text); inOrder.verify(text).get(); assertXMLEqual( new StringReader( "<body><outer>text<e a='v'>hello & welcome<</outer></body>"), new StringReader(html(processed))); } }